Przykad 7.6. Realizacja algorytmu minimaks w jzyku Java
public class MinimaxEvaluation implements IEvaluation {
   IGameState state;    /** Stan do modyfikowania podczas poszukiwa */
   int ply;             /** Gboko kursowania, czyli zasig poszukiwa */
   IPlayer original;    /** Wszystkie stany s oceniane z tej perspektywy */

   public MinimaxEvaluation (int ply) {
      this.ply = ply;
   }
   public IGameMove bestMove (IGameState s,
                              IPlayer player, IPlayer opponent) {
      this.original = player;
      this.state = s.copy();

      MoveEvaluation me = minimax(ply, IComparator.MAX,
                                  player, opponent);
      return me.move;
   }

   private MoveEvaluation minimax (int ply, IComparator comp,
                                   IPlayer player, IPlayer opponent) {

      // Jeli brak ruchw dozwolonych lub li, to zwr ocen stanu
      Iterator<IGameMove> it = player.validMoves(state).iterator();
      if (ply == 0 || !it.hasNext()) {
         return new MoveEvaluation (original.eval(state));
      }

      // Prbuj poprawi to dolne ograniczenie (na podstawie selektora)
      MoveEvaluation best = new MoveEvaluation (comp.initialValue());

      // Generuj stany gry wynikajce ze wszystkich ruchw dozwolonych
      // dla tego gracza
      while (it.hasNext()) {
         IGameMove move = it.next();
         move.execute(state);

      // Oceniaj pozycj rekurencyjnie. Oblicz minimaks i zamie
      // gracza z przeciwnikiem, synchronicznie z MIN i MAX
      MoveEvaluation me = minimax (ply-1, comp.opposite(),
                                   opponent, player);
      move.undo(state);

      // Wybierz maksimum (minimum) ze stanw potomnych, jeli
      // jestemy MAX (MIN)
      if (comp.compare(best.score, me.score) < 0) {
         best = new MoveEvaluation (move, me.score);
      }
     }
     return best;
   }
}
